// 入口文件
import Vue from 'vue'
import app from './App.vue'


import MintUI from 'mint-ui'
Vue.use(MintUI)
// mint-ui样式
import 'mint-ui/lib/style.css'

// 引入Header模块
// import { Header,Swipe, SwipeItem,Button,Lazyload } from 'mint-ui';
// Vue.component(Header.name, Header);
// Vue.component(Button.name, Button); 

//引入Swipe
// import { Swipe, SwipeItem } from 'mint-ui';
// Vue.component(Swipe.name, Swipe);
// Vue.component(SwipeItem.name, SwipeItem);

// 图片懒加载
// Vue.use(Lazyload);

//mui样式
import './lib/mui/css/mui.min.css'
//扩展样式和字体图标(tabbar)
import './lib/mui/css/icons-extra.css'
import './lib/mui/fonts/mui-icons-extra.ttf'




// vue-resource
import Vueresource from 'vue-resource'
Vue.use(Vueresource)
// 设置请求的根路径
Vue.http.options.root = 'http://www.liulongbin.top:3005';
Vue.http.options.emulateJSON = true;

// 路由
import VueRouter from 'vue-router'
Vue.use(VueRouter)
import router from './router'

//Moment.js
import moment from 'moment'
//定义全局的过滤器
Vue.filter('dateFormat',function(dateStr){
    return moment().format('YYYY-MM-DD HH:mm:ss')
})

// 缩略图
import VuePreview from 'vue-preview'
Vue.use(VuePreview)

// vuex
import Vuex from 'vuex'
Vue.use(Vuex)
// 获取localStorage中的car数组
var car = JSON.parse(localStorage.getItem('car') || '[]')
const  store = new Vuex.Store({
    state:{
        // 存放数据
        car:car
    },
    mutations:{
// 将商品信息添加到car中
        addInfoToCar(state,goodsinfo){
            // 如果购物车中已有该商品则只需增加数量,否则添加整个信息
            var flag = false
            state.car.some(item => {
                if (item.id == goodsinfo.id) {
                  item.count += parseInt(goodsinfo.count)
                  flag = true
                  return true
                }
              })
            if(!flag) {
                state.car.push(goodsinfo)
            }

            // 当更新car后,将car数组存储在localStorage中
            localStorage.setItem('car',JSON.stringify(state.car))
        },
// 购物车商品数量改变同步到store中
        updateCar(state,info){
            state.car.some(item=>{
                if(item.id == info.id){
                    item.count = parseInt(info.count)
                    return true;
                }
                // return true;  //记住啊,这个bug让你废了一天!
                
            })
            localStorage.setItem('car',JSON.stringify(state.car))
        },
// 删除商品
        delgoods(state,id){
            state.car.some((item,i)=>{
                if(item.id == id){
                    state.car.splice(i,1)
                    return true
                }
            })
            localStorage.setItem('car',JSON.stringify(state.car))
        },
//开关: 页面-->store
        switchChange(state,info){
            state.car.forEach(item=>{
                if(item.id == info.id) {
                    item.selected = info.selected
                }
            })

            localStorage.setItem('car',JSON.stringify(state.car))
        }
    },
    getters:{
//计算总件数
        getCount(state){
            var c = 0
            state.car.forEach(item=>{
                c += item.count
            })
            return c
        },
// 实现购物车列表numbox初始化
        getGoodsCount(state) {
            var o ={}
            state.car.forEach(item=>{
                o[item.id] = item.count
            })
            return o;
        },
//开关: store-->页面
        getSelected(state){
            var s = {}
            state.car.forEach(item=>{
                s[item.id] = item.selected
            })
            return s
        },
//已勾选的数量
        getSelectedCount(state){
            var selectedCount = 0
            state.car.forEach(item=>{
                if(item.selected == true){
                    selectedCount += item.count
                }
            })
            return selectedCount;
        },
//总价
        getSumPrice(state){
            var sum = 0
            state.car.forEach(item=>{
                if(item.selected == true){
                    sum += item.count * item.price
                }
            })
            return sum;
        }
    }
})

var vm = new Vue({
    el:'#app',
    render:c =>c (app),
    router,
    store
})